from tool import union

def count_elem(l):
    "Has been removed"
    # 计算集合内元素个数不可以对列表使用len()，因为当集合内只有一个元素时，len()的结果为该元素的长度而非1。使用该函数作为替代
    return len(l) if isinstance(l, list) else 1


def flatten(a):
    "将多维列表降为一维列表"
    b = []
    for each in a:
        if not isinstance(each, list):
            b.append(each)
        else:
            b.extend(flatten(each))
    return b


def special_union(a, b):
    "特殊的“交集”运算"
    flat_a = flatten(a)
    flat_b = flatten(b)
    flat_res = union(flat_a, flat_b)
    res = []
    for x in flat_res:
        res.append([x])
    return res